/*
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.faces.context.FacesContext;
import model.AplModulo;
import model.AplOperador;
import org.primefaces.context.RequestContext;
import util.MyConexion;
import util.MyResulsetToList;

/**
 *
 * @author ebeltran
 */
public class AplModuloDaoImpl implements AplModuloDao {

    private static AplModuloDaoImpl instancia = null;
    private Connection conn;
    private AplOperador aplOperador;

    private static AplModuloDaoImpl getInstancia()
    {
        if(instancia == null)
            instancia = new AplModuloDaoImpl();
        return instancia;
    }

    @Override
    public List<AplModulo> findAllX() {
        RequestContext sesion = RequestContext.getCurrentInstance();
        
        RequestContext.setCurrentInstance(sesion);
        List filas = new ArrayList();
        int id_agencia = 1;
        String usuario = "MPATINO";        
        
//        Object aplOperador = null;
//        aplOperador = contex.getAttributes().put(aplOperador, aplOperador);
//        String usuario_e = sesion.toString().concat("usuario");

        List <String> wantedColumnNames = new ArrayList<String>();
        wantedColumnNames.add("n_modulo");
        wantedColumnNames.add("n_modulo_padre");
        wantedColumnNames.add("nombre");
        wantedColumnNames.add("no_orden");
        wantedColumnNames.add("fecha");        
        wantedColumnNames.add("descripcion");
        wantedColumnNames.add("ruta_jsp");        
        wantedColumnNames.add("ruta_ayuda");                
        wantedColumnNames.add("si_interfaz");        
                
        ResultSet rst = null;
        String sql = "SELECT * FROM RS_APL_MODULO(?,?)";
        
        try {
            conn = MyConexion.getDBConexion().getConexion();
            PreparedStatement psmt = conn.prepareStatement(sql);
            psmt.setInt(1, id_agencia);
            psmt.setString(2, usuario);
            rst = psmt.executeQuery();
            
            filas = MyResulsetToList.ResulsetToList(rst, wantedColumnNames);
            rst.close();
            psmt.close();
            conn.close();
            return filas;
            }
        catch (Exception e) {
        }
        return filas;
    }
    
    @Override
    public List<AplModulo> findAll() {
        List<AplModulo> lista = new ArrayList<AplModulo>();
        ResultSet rst = null;
        String sql = "SELECT * FROM RS_APL_MODULO(?,?)";
        RequestContext sesion = RequestContext.getCurrentInstance();
        int id_agencia = (int) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("id_agencia");
        String usuario_e = (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
        try {

            conn = MyConexion.getDBConexion().getConexion();
            PreparedStatement psmt = conn.prepareStatement(sql);
            psmt.setInt(1, id_agencia);
            psmt.setString(2, usuario_e);
            rst = psmt.executeQuery();
            while (rst.next()) {
                AplModulo aplModulos = new AplModulo();
                aplModulos.setId_agencia(id_agencia);                       /*  0 */
                aplModulos.setUsuario(usuario_e);                             /*  1 */
                aplModulos.setN_modulo(rst.getInt("n_modulo"));             /*  2 */
                aplModulos.setN_modulo_padre(rst.getInt("n_modulo_padre")); /*  3 */
                aplModulos.setNombre(rst.getString("nombre"));              /*  4 */
                aplModulos.setNo_orden(rst.getInt("no_orden"));             /*  5 */
                aplModulos.setFecha(rst.getTimestamp("fecha"));             /*  7 */
                aplModulos.setDescripcion(rst.getString("descripcion"));    /*  8 */
                aplModulos.setRuta_jsp(rst.getString("ruta_jsp"));          /*  9 */
                aplModulos.setRuta_ayuda(rst.getString("ruta_ayuda"));      /* 10 */
                aplModulos.setSi_interfaz(rst.getInt("si_interfaz"));       /* 11 */
                lista.add(aplModulos);
            }
            rst.close();
            psmt.close();
            conn.close();
            return lista;
        } catch (Exception e) {
            try {
                conn.clearWarnings();
                conn.close();
            } catch (Exception e2) {
            }
        }
        return null;
    }
}
